<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"
    />
    <title>代理模式</title>
</head>

<body>
    <h2>书籍：《javascript设计模式与开发实践》</h2>
    <h3>假设当 A 在心情好的时候收到花，小明表白成功的几率有 60%，而当 A在心情差的时候收到花，小明表白的成功率无限趋近于 0。 小明跟 A 刚刚认识两天，还无法辨别 A 什么时候心情好。如果不合时宜地把花送给 A，花
    被直接扔掉的可能性很大，这束花可是小明吃了 7天泡面换来的。 但是 A 的朋友 B 却很了解 A，所以小明只管把花交给 B，B 会监听 A 的心情变化，然后选 择 A心情好的时候把花转交给 A，代码如下：</h3>
    <script type="text/javascript">
        function Flow() {
            this.name = 'flow'
        }
        var xiaoming = {
            sendFlow: function (target) {
                var newFlow = new Flow()
                target.proxysendFlow(newFlow)
            }
        }
        var A = {
            name:'a',
            receiveFlow: function (flow) {
                console.log(this.name + ' 收到花 ' + flow.name)
            },
            listenGoodMood:function(fn){
                setTimeout(() => {
                    console.log("假设5秒之后心情很好,此时可以送花了")
                    fn()
                }, 5000);
            }
        }
        var B = {
            name:'b',
            proxysendFlow:function (flow) {
                A.listenGoodMood(function(){
                    A.receiveFlow(flow)// 送花，A即收到
                })
            }
        }
        xiaoming.sendFlow(B)
    </script>

</body>

</html>